iT邦幫忙

2022 iThome 鐵人賽

DAY 7
0
自我挑戰組

初入Swift新手村的旅程系列 第 7

Day07 Swift語法( 6 )陣列

  • 分享至 

  • xImage
  •  

陣列

陣列是一種有序集合,放入其中的資料都有一個編號,從0開始遞增,開發者可以找到與其對應的值。

陣列能夠放入其中的資料並不是只有數字而已,可以存放任意型別的資料,但是所有資料型別必須統一。

類型推斷判斷為Int類型的陣列

var a = [1,2,3,4]

直接宣告為String類型的陣列

var b:[String] = ["Hello", "World"]

宣告為陣列,類型為浮點型

var c:Array = [1.3, 21.5]

創建空陣列

var array1: [Int]
var array2:Array
array1 = []
array2 = Array()

透過一組元素創建陣列

array2 = Array(arrayLiteral: 1,2,3)

陣列與字串類型類似,空陣列的含義並不是nil,而是陣列中的元素為空

在Swift中,陣列採用結構體的方式來實現,對於大量重複元素的陣列,開發者可以直接使用快捷方式來創建。

var array3 = [String](repeating: "Hello", count: 10)
print(array3)
// 印出 ["Hello", "Hello", "Hello", "Hello", "Hello", "Hello", "Hello", "Hello", "Hello", "Hello"]
var array4 = [Int](repeating: 1, count: 10)
print(array4)
// 印出 [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

需要注意的是陣列在宣告時必須明確其類型,但不一定要直接指定,如果陣列在宣告時,有初始值,則可以直接利用型別推斷出其類型。

在陣列中,也可以利用 + 來進行陣列的相加。

var array5 = [1,2,3] + [4,5,6]
print(array5)
// 印出 [1, 2, 3, 4, 5, 6]

陣列中也提供了許多方法來獲取陣列中的訊息元素,或是對陣列進行增刪查改

先宣告一個陣列

var array = [1,2,3,4,5,6,7,8,9]

count 來獲取陣列中的元素個數

print(array.count)
// 印出 9

isEmpty 來確認陣列是否為空

if array.isEmpty {
    print("Empty")
}
// 上面判斷不為空所以不會印出任何東西

透過下標來獲取陣列中的元素 1

var x = array[0]
// 印出 1

獲取區間元素組成的新陣列

var subArray = array[0...3]
print(subArray)
// 印出 [1, 2, 3, 4]

獲取陣列中的第一個元素

var y = array.first

獲取陣列中的最後一個元素

var z = array.last

修改陣列中某個位置的元素

array[0] = 0

修改陣列中區間範圍的元素

向陣列添加一個新元素

array.append(10)

向陣列添加一組新元素

array.append(contentsOf: [11,12,13])

向陣列中某個位置插入一個元素

array.insert(0, at: 0)

向陣列中某個位置插入一組元素

array.insert(contentsOf: [-2,-1], at: 0)

刪除陣列中某個位置的元素

array.remove(at: 1)

刪除陣列中第一個位置的元素

array.removeFirst()

刪除陣列中最後一個位置的元素

array.removeLast()

刪除前幾位元素,參數為要刪出的個數

array.removeFirst(3)

刪除後幾位元素,參數為要刪出的個數

array.removeLast(6)

刪除一個範圍的元素

array.removeSubrange(0...2)

取代一個範圍中的元素

array.replaceSubrange(0...2, with: [0,1])

刪除所有元素

array.removeAll()

判斷陣列中是否包含某個元素

if array.contains(1) {
    print(true)
}

上面的方法,需要注意一個點,能夠進行增刪查改的,只有陣列中宣告的是變數才行,常數則不能使用這些操作。

for in 遍歷來獲得陣列中的元素

先宣告一個常數Int陣列

let arrayLet = [0,1,2,3,4]
let arrayLet2 = [(1,2),(2,3),(3,4)]
for item in arrayLet {
    print(item)
}
// 印出 0 1 2 3 4

陣列列舉遍歷

會return一個元組集合,這個與String類型不同的是,陣列的下標可以為Int類型,而String的下標須為嚴格的Index類型。

for item in arrayLet.enumerated() {
    print(item)
}

陣列 indices,會return一個範圍,此範圍就是陣列下標的範圍

for index in arrayLet2.indices {
    print(arrayLet2[index], separator: "")
}

陣列排序

宣告一個陣列

var arraySort = [1,3,5,6,7]

從大排到小

arraySort = arraySort.sorted(by: >)

從小排到大

arraySort = arraySort.sorted(by: <)

獲取陣列中的最大值

arraySort.max()

獲取陣列中的最小值

arraySort.min()

接下來,是集合Set的介紹


上一篇
Day06 Swift語法( 5 )字串,字元
下一篇
Day08 Swift語法( 7 ) 集合Set
系列文
初入Swift新手村的旅程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言